package desmontec.documentos

import desmontec.funcionarios.Engenheiro
import desmontec.funcionarios.EngenheiroController;
import grails.test.*



class GuiaDeTrafegoFunctionalTest extends functionaltestplugin.FunctionalTestCase {
    protected void setUp() {
		super.setUp()
    }

    protected void tearDown() {
        super.tearDown()
    }
	
	void testCriarGuiaDeTrafego(){
		get("login/auth")
		
		form (){
			j_username = "admin"
			j_password = "12345678"
			
			click "logar"
		}
		
		get("/engenheiro/create")
		
		form () {
			nome = "Engenheiro"
			numeroCREA = "1234"
			click "create"
		}
		
		
		// Criando uma DPG
		Calendar dataInicial = GregorianCalendar.getInstance();
		dataInicial.set(2011, 01, 01);
		
		Calendar dataFinal = GregorianCalendar.getInstance();
		dataFinal.set(2011, 12, 01);
		
		get("/DPG/criarDPG")
		form () {
			numero = "1234"
			beneficiario = "DPG 1"
			selects['responsavel.id'].select "1"
			inicioDoPrazoValidade = dataInicial.getTime()
			fimDoPrazoValidade = dataFinal.getTime()
			click "create"
		}
		
		form(){
			
			dinamite = 10
			espoleta = 10
			estopim = 10
			cordelDet = 10
			espoletim = 10
			retardo = 10
			click "create"
		}
		
		def dpg = DPG.findAllByNumero(1234)
		for (d in dpg){
			d.inicioDoPrazoValidade = dataInicial.getTime()
			d.fimDoPrazoValidade = dataFinal.getTime()
			d.save(flush: true)
		}
		
		Calendar dataCompetencia = GregorianCalendar.getInstance();
		dataCompetencia.set(2011, 6, 1)
		get("/mapaEstocagem/create")
		form (){
			numeroDoCertificado = 123456
			competencia = dataCompetencia.getTime()
			selects['dpg.id'].select "1"
			click "create"
		}
		
		get("/guiaDeTrafego/create")
		form (){
			numeroDaGuia = 654321
			selects['mapaDeEstocagem.id'].select "1"
			dinamite = 9
			espoleta = 9
			estopim = 9
			cordelDet = 9
			espoletim = 9
			retardo = 9
			click "create"
		}
		assertContentContains "Guia criada com sucesso"
	}
	
	void testParametrosNulosGuiaDeTrafego(){
		get("login/auth")
		
		form (){
			j_username = "admin"
			j_password = "12345678"
			
			click "logar"
		}
		
		get("/engenheiro/create")
		
		form () {
			nome = "Engenheiro2"
			numeroCREA = "12345"
			click "create"
		}
		
		
		// Criando uma DPG
		Calendar dataInicial = GregorianCalendar.getInstance();
		dataInicial.set(2011, 01, 01);
		
		Calendar dataFinal = GregorianCalendar.getInstance();
		dataFinal.set(2011, 12, 01);
		
		
		
		get("/DPG/criarDPG")
		form () {
			numero = "12345"
			beneficiario = "DPG 2"
			selects['responsavel.id'].select "2"
			inicioDoPrazoValidade = dataInicial.getTime()
			fimDoPrazoValidade = dataFinal.getTime()
			click "create"
		}
		
		form(){
			dinamite = 10
			espoleta = 10
			estopim = 10
			cordelDet = 10
			espoletim = 10
			retardo = 10
			click "create"
		}
		
		def dpg = DPG.findAllByNumero(1234)
		for (d in dpg){
			d.inicioDoPrazoValidade = dataInicial.getTime()
			d.fimDoPrazoValidade = dataFinal.getTime()
			d.save(flush: true)
		}
		
		Calendar dataCompetencia = GregorianCalendar.getInstance();
		dataCompetencia.set(2011, 6, 1)
		get("/mapaEstocagem/create")
		form (){
			numeroDoCertificado = 456
			competencia = dataCompetencia.getTime()
			selects['dpg.id'].select "2"
			click "create"
		}
		
		get("/guiaDeTrafego/create")
		form (){
			click "create"
		}
		assertContentContains "Por favor informe o numero da guia de trafego"
		assertContentContains "Por favor informe o mapa de estocagem da guia"
		assertContentContains "Por favor informe a quantidade de Dinamite"
		assertContentContains "Por favor informe a quantidade de Retardo"
		assertContentContains "Por favor informe a quantidade de Dinamite"
		assertContentContains "Por favor informe a quantidade de Espoleta"
		assertContentContains "Por favor informe a quantidade de Espoletim"
		assertContentContains "Por favor informe a quantidade de Cordel Detonante"
		
//		A quantidade minima para o material Cordel Detonante deve ser maior que 0.
//		A quantidade minima para o material Dinamite deve ser maior que 0.
//		A quantidade minima para o material Espoleta deve ser maior que 0.
//		A quantidade minima para o material Espoletim deve ser maior que 0.
//		A quantidade minima para o material Estopim deve ser maior que 0.
//		A quantidade minima para o material Retardo deve ser maior que 0.
	}
	
	void testQuantidadesNegativasGuiaDeTrafego(){
		get("login/auth")
		
		form (){
			j_username = "admin"
			j_password = "12345678"
			
			click "logar"
		}
		
		get("/engenheiro/create")
		
		form () {
			nome = "Engenheiro3"
			numeroCREA = "123456"
			click "create"
		}
		
		
		// Criando uma DPG
		Calendar dataInicial = GregorianCalendar.getInstance();
		dataInicial.set(2011, 01, 01);
		
		Calendar dataFinal = GregorianCalendar.getInstance();
		dataFinal.set(2011, 12, 01);
		
		
		
		get("/DPG/criarDPG")
		form () {
			numero = "123456"
			beneficiario = "DPG 3"
			selects['responsavel.id'].select "3"
			inicioDoPrazoValidade = dataInicial.getTime()
			fimDoPrazoValidade = dataFinal.getTime()
			click "create"
		}
		
		form(){
			dinamite = 10
			espoleta = 10
			estopim = 10
			cordelDet = 10
			espoletim = 10
			retardo = 10
			click "create"
		}
		
		def dpg = DPG.findAllByNumero(1234)
		for (d in dpg){
			d.inicioDoPrazoValidade = dataInicial.getTime()
			d.fimDoPrazoValidade = dataFinal.getTime()
			d.save(flush: true)
		}
		
		Calendar dataCompetencia = GregorianCalendar.getInstance();
		dataCompetencia.set(2011, 6, 1)
		get("/mapaEstocagem/create")
		form (){
			numeroDoCertificado = 789
			competencia = dataCompetencia.getTime()
			selects['dpg.id'].select "3"
			click "create"
		}
		
		get("/guiaDeTrafego/create")
		form (){
			numeroDaGuia = 123
			selects['mapaDeEstocagem.id'].select "1"
			dinamite = -1
			espoleta = -1
			estopim = -1
			cordelDet = -1
			espoletim = -1
			retardo = -1
			click "create"
		}
		assertContentContains "A quantidade minima para o material Cordel Detonante deve ser maior que 0."
		assertContentContains "A quantidade minima para o material Dinamite deve ser maior que 0."
		assertContentContains "A quantidade minima para o material Espoleta deve ser maior que 0."
		assertContentContains "A quantidade minima para o material Espoletim deve ser maior que 0." 
		assertContentContains "A quantidade minima para o material Estopim deve ser maior que 0."
		assertContentContains "A quantidade minima para o material Retardo deve ser maior que 0."
	}
}
